package com.crm.result;

import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 后端统一返回结果(思)
 * @param <T>
 */
@Data
public class Result_code<T> implements Serializable {

    private Integer code; // 编码：1成功，0和其它数字为失败
    private String msg = ""; // 错误信息
    private T data; // 数据主体
    private String parms; // 额外参数
    private Long total; // 总记录数，用于分页
    private List rows; // 数据列表
    private Map<String, Object> params; // 统计信息

    // 无参成功返回
    public static <T> Result_code<T> success() {
        Result_code<T> result = new Result_code<>();
        result.code = 200;
        result.msg = "操作成功";
        return result;
    }

    // 带数据的成功返回
    public static <T> Result_code<T> success(T data) {
        Result_code<T> result = new Result_code<>();
        result.data = data;
        result.code = 200;
        result.msg = "操作成功";
        return result;
    }

    // 错误返回
    public static <T> Result_code<T> error(String msg) {
        Result_code<T> result = new Result_code<>();
        result.msg = msg;
        result.code = 0;
        return result;
    }

    // 分页查询成功返回，使用 PageResult 封装，包含 params 的统计数据
    public static <T> Result_code<T> commonSuccess(PageResult pageResult, Map<String, Object> params) {
        Result_code<T> result = new Result_code<>();
        result.msg = "查询成功";
        result.code = 200;
        result.total = pageResult.getTotal();
        result.rows = pageResult.getRows();
        result.params = params; // 设置额外的统计数据
        return result;
    }
}
